
// https://leetcode.cn/problems/move-zeroes/
// //移动零
// class Solution {
// public:
//     void moveZeroes(vector<int>& nums) 
//     {
//         int dsc = 0;
//         int cur = 0;
//         while(cur < nums.size() && dsc < nums.size())
//         {
//             while(dsc < nums.size() && nums[dsc] != 0  )
//             {
//                 dsc++;
//             }
//             cur = dsc;
//             while(cur < nums.size() && nums[cur] == 0  )
//             {
//                 cur++;
//             }
//             if(cur < nums.size() && dsc < nums.size() && dsc < cur)
//             {
//                 swap(nums[cur],nums[dsc]);
//             }
//             dsc++;
//         }
//     }
// };


// class Solution {
// public:
//     void moveZeroes(vector<int>& nums) 
//     {
//         int desc = -1;
//         int cur = 0;
//         for(; cur < nums.size(); cur++)
//         {
//             if(nums[cur] != 0)
//             {
//                 swap(nums[desc+1],nums[cur]);
//                 desc++;
//             }
//         }
//     }
// };

// https://leetcode.cn/problems/duplicate-zeros/description/
// 复写零
// class Solution {
// public:
//     void duplicateZeros(vector<int>& arr) 
//     {
//         int cur = 0;
//         int desc = -1;
//         int flag = 1;
//         int n = arr.size();
//         while(cur < n)
//         {
//             if(arr[cur] == 0)
//             {
//                 desc+=2;
//                 flag = 0;
//             }
//             else
//                 desc++;
//             if(desc >= n-1)
//                 break;
//             cur++;
//         }
//         if(flag)return;

//         if(desc >= n )
//         {
//             arr[desc - 1] = 0;
//             desc -= 2;
//             cur--;
//         }

//         while(cur >= 0)
//         {
//             if(arr[cur] == 0)
//             {
//                 arr[desc--] = 0;
//                 arr[desc--] = 0;
//             }
//             else
//             {
//                 arr[desc--] = arr[cur];
//             }
//             cur--;
//         }
//     }
// };


//快乐数（medium）
//https://leetcode.cn/problems/happy-number/
class Solution {
public:
    int bitsum(int n)
    {
        int sum = 0;
        while(n)
        {
            int t = n % 10;
            sum += t * t;
            n /= 10;
        }
        return sum;
    }

    bool isHappy(int n) 
    {
        int slow = n;
        int fast = bitsum(n);
        while(slow != fast)
        {
            slow = bitsum(slow);
            fast = bitsum(bitsum(fast));
        }

        return slow == 1;
    }
};

